package com.tulele.vtool.bus.mapper;

import com.tulele.vtool.bus.model.ArticleInfo;
import com.tulele.vtool.bus.model.ArticleStand;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

@Component(value = "articleInfoMapper")
public interface ArticleInfoMapper {

    //获取当前时间 待推送的文章 或 视频
    List<ArticleInfo> queryArticleStandList(@Param("articleTypeId") Integer articleTypeId,@Param("resourceType") Integer resourceType);

    /**
     * 随机查询品牌推荐文章
     * @param articleBrandId
     * @return
     */
    List<ArticleInfo> queryRecommendHotArticleInfoByBrand(Integer articleBrandId);

    /**
     * 随机查询类型推荐文章
     * @param articleTypeId
     * @return
     */
    List<ArticleInfo> queryRecommendHotArticleInfoByType(@Param("articleTypeId") Integer articleTypeId, @Param("recordSize")Integer recordSize);

    /**
     * 查询用户分享文章数目
     * @param userId
     * @return
     */
    Integer queryUserShareArticleCount(Integer userId);

    /**
     * 查询下一次推送的文章信息
     * @return
     */
    List<ArticleInfo> queryNextPushArticleInfo(@Param("lastPushArticleId")Integer lastPushArticleId, @Param("articleBrandId")Integer articleBrandId, @Param("recordSize")Integer recordSize);

    /**
     * 根据文章ID查询文章信息
     * @param articleId
     * @return
     */
    ArticleInfo queryArticleInfoByArticleId(@Param("articleId")Integer articleId);

    /**
     * 根据文章品牌查询文章信息 通过热度排序
     * @param articleBrandId
     * @param recordSize
     * @return
     */
    List<ArticleInfo> queryArticleInfoByArticleBrandForHotScore(@Param("articleBrandId")Integer articleBrandId, @Param("recordSize")Integer recordSize);

    /**
     * 根据文章品牌查询视频信息 通过热度排序
     * @param articleBrandId
     * @param recordSize
     * @return
     */
    List<ArticleInfo> queryVideoInfoByArticleBrandForHotScore(@Param("articleBrandId")Integer articleBrandId, @Param("recordSize")Integer recordSize);



    /**
     * 根据文章类型查询文章信息 通过热度排序
     * @param articleTypeId
     * @param recordSize
     * @return
     */
    List<ArticleInfo> queryArticleInfoByArticleTypeForHotScore(@Param("articleTypeId")Integer articleTypeId, @Param("recordSize")Integer recordSize);

    /**
     * 根据视频类型查询文章信息 通过热度排序
     * @param articleTypeId
     * @param recordSize
     * @return
     */
    List<ArticleInfo> queryVideoInfoByArticleTypeForHotScore(@Param("articleTypeId")Integer articleTypeId, @Param("recordSize")Integer recordSize);

    /**
     * 随机查询5篇正能量文章
     * @return
     */
    List<ArticleInfo> selectArticleInfoByArticleTypePositiveEnergy();

    /**
     * 随机查询5篇订阅文章
     * @return
     */
    List<ArticleInfo> selectArticleInfoByArticleType(Integer articleTypeId);

    String getArticleBrandName(@Param("id")Integer id);

    /**
     * 获取行业名称
     * @param articleId 文章 ID
     * @return 行业名称
     */
    String getArticleTypeName(@Param("articleId") Integer articleId);

    /**
     * 获取用户关注的类型
     * @param userId 用户 ID
     * @return 用户关注的类型
     */
    String getUserArticleType(Integer userId);

    /**
     * 根据文章类型 ID 获取文章类型名称
     * @param articleTypeId 文章类型 ID
     * @return 文章类型名称
     */
    String getArticleTypeNameById(Integer articleTypeId);
}